//
// Created by 紫霄 on 2020/4/29.
//

#ifndef LEETCODE_60_H
#define LEETCODE_60_H
#include <complex>
#include <vector>
using namespace std;
class Solution {
public:
  vector<double> twoSum(int n) {
    vector<double> base(6, 1.0 / 6.0);
    if (n == 1)
      return base;
    auto last = twoSum(n - 1); // 对于n-1；
    int num = 6 * n - n + 1;
    vector<double> ans(num);
    for (int i = 0; i < num - 5; ++i) {
      if (i < 6) { // 前6个元素
        for (int j = 0; j < i + 1; ++j) {
          ans[i] += last[j] * (1.0 / 6.0);
        }
      } else { // 中间的元素
        for (int j = 0; j < 6; ++j) {
          // 从n-1结果中，往前数6个；
          ans[i] += last[i - 6 + 1 + j] * (1.0 / 6.0);
        }
      }
    }
    for (int i = num - 5; i < num; ++i) { // 后5个元素
      ans[i] = ans[num - i - 1];
    }
    return ans;
  }
};

#endif // LEETCODE_60_H
